home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 2000 #4 / Amiga Plus CD - 2000 - No. 4.iso / Tools / Dev / powerd / lib / powerd_lib.lha / PowerD / DupStr.ass < prev    next >
Encoding:
Text File  |  2000-02-29  |  626 b   |  33 lines

  1. ; a0 - source string
  2.  
  3.     xdef    _DupStr
  4.  
  5. _DupStr    movem.l    d2/a2/a6,-(a7)
  6.  
  7.     movea.l    a0,a2        ; store str
  8.     move.l    a0,d1
  9. .loop1    tst.b    (a0)+
  10.     bne.s    .loop1
  11.     move.l    a0,d0
  12.     sub.l    d1,d0        ; source string length
  13.  
  14.     addq.l    #4,d0        ; add header and zero byte
  15.     move.l    d0,d2
  16.     move.l    #$50000,d1    ; MEMF_CLEAR|MEMF_REVERSE
  17.     movea.l    $4.w,a6
  18.     jsr    (-198,a6)        ; AllocMem
  19.     tst.l    d0
  20.     beq.s    .finish
  21.     addq.l    #2,d0        ; shift by header
  22.     movea.l    d0,a1
  23.     move.w    d2,(-2,a1)    ; this is private, and can be used only with RemStr()
  24.     move    a1,d0
  25.  
  26. .loop    move.b    (a2)+,(a1)+    ; copy src to dst
  27.     beq.s    .finish
  28.     dbf.s    d2,.loop
  29.     clr.b    (-1,a1)
  30.  
  31. .finish    movem.l    (a7)+,d2/a2/a6
  32.     rts
  33.